package com.macro.mall.commission.service;

import com.github.pagehelper.Page;
import com.macro.mall.commission.domain.UserAccount;
import com.macro.mall.commission.entity.UserAccountEntity;
import com.macro.mall.commission.service.bo.InsertUserAccountInput;
import com.macro.mall.commission.service.bo.PagedQueryUserAccountInput;

import java.util.List;

/**
 * 用户佣金账户Service
 *
 * @author xuyanjun
 * @date 2019-12-11
 */
public interface UserAccountService {

    /**
     * 新增用户佣金账户
     *
     * @param input input
     * @return 新增id
     */
    long insert(InsertUserAccountInput input);

    /**
     * 根据Id获取用户佣金账户
     *
     * @param id id
     * @return 用户佣金账户
     */
    UserAccountEntity getById(long id);

    /**
     * 根据Id获取分佣用户账户
     *
     * @param userId 用户id
     * @return 分佣用户账户
     */
    UserAccountEntity getByUserId(long userId);

    /**
     * 根据批量Id获取用户佣金账户
     *
     * @param batchIds 批量ids
     * @return 用户佣金账户集合
     */
    List<UserAccountEntity> listByBatchIds(List<Long> batchIds);

    /**
     * 分页查询
     *
     * @param input input
     * @return 分页的用户佣金账户
     */
    Page<UserAccountEntity> pagedQuery(PagedQueryUserAccountInput input);

    /**
     * 将实体对象转换成domain对象
     *
     * @param userAccountEntity 实体
     * @return userAccount
     */
    UserAccount entityToDomain(UserAccountEntity userAccountEntity);

    /**
     * 将实体对象转换成domain对象
     *
     * @param userAccountEntities 实体
     * @return userAccounts
     */
    List<UserAccount> entityToDomain(List<UserAccountEntity> userAccountEntities);

}